package Data_Structure.Queue;

import java.util.Deque;
import java.util.LinkedList;
import java.util.Queue;

/**
 * @className: Test1
 * @author: 芃
 * @description: 队列的基本使用
 * @date: 2023/8/21 18:17
 */
//队列：先进先出
//普通队列：队尾进，对头出
//双端队列：头插尾插、头出尾出（当做栈来使用）
public class Test1 {
    public static void main(String[] args) {
        Deque<Integer> deque = new LinkedList<>();
        deque.offer(1);//默认队尾入队
        deque.addFirst(2);//头插
        deque.addLast(3);//尾插
        System.out.println(deque.peekFirst());//查看队头元素
        System.out.println(deque.peekLast());//查看队尾元素
    }
    public static void main2(String[] args) {
        Queue<Integer> queue = new LinkedList<>();
        //往队列添加元素
        queue.add(1);
        //在容量受限制的情况下，插入元素有可能会抛出异常
        queue.offer(2);
        //在容量受限制的情况下，不会抛出异常

        //查看对头元素
        System.out.println(queue.peek());
        //在队列为空时，peek方法返回null
        System.out.println(queue.element());
        //在队列为空时，element方法抛出异常

        //出对头元素
        System.out.println(queue.remove());
        //当队列为空时，remove方法会抛出异常
        System.out.println(queue.poll());
        //当队列为空时，poll方法会返回null
    }
    public static void main1(String[] args) {
        Queue<Integer> queue = new LinkedList<>();//普通的队列
        Deque<Integer> deque = new LinkedList<>();//双端队列
    }
}
